package rauguelu.programaEventos;

import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import java.util.List;

import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

import rauguelu.feria.tapas.FeriaTapa;
import rauguelu.feria.utils.Constants;
import rauguelu.items.Prevision;
import rauguelu.items.ReporteTiempo;
import android.app.Activity;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.provider.Settings.Secure;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class MasInfoClimatologia extends ListActivity{

	private GregorianCalendar fechaActual;
	private SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
	private ProgressDialog progressDialog;
	ReporteTiempo reporte;
	@Override
	public void onCreate(Bundle savedInstanceState) {
 
		
		super.onCreate(savedInstanceState);
		setContentView(R.layout.climatologia); 
		
		
		// Lanzamos un evento de ProgressDialog para hacer esperar al usuario
    	progressDialog = ProgressDialog.show(MasInfoClimatologia.this,
    			"", 
				"Consultando el tiempo...");
		
		
		new Thread(new Runnable(){
			public void run() {
				try{
					
					HttpClient httpclient = new DefaultHttpClient();     
			    	HttpGet httpget = new HttpGet(Constants.urlTiempo);      
			    	ResponseHandler<String> responseHandler = new BasicResponseHandler();
			     
					String responseBody = null;
					responseBody = httpclient.execute(httpget, responseHandler);
					LectorTiempo lector = new LectorTiempo(responseBody);
					reporte = lector.damePrevisiones();
				}
				catch (Exception e) {
					e.printStackTrace();	
				}	
				progressHandler.sendEmptyMessage(0);
			}
			}).start();
    
	}
	public void rellenaPantalla()
	{
		fechaActual =new GregorianCalendar();
		fechaActual.setTime(reporte.getFecha());
				
		TextView fecha = (TextView) findViewById(R.id.fecha);
		TextView situacion= (TextView) findViewById(R.id.situacion);
		TextView humedad = (TextView) findViewById(R.id.humedad);
		TextView viento = (TextView) findViewById(R.id.viento);
		TextView temperatura = (TextView) findViewById(R.id.temperatura);
		TextView dsCabeceraTiempo = (TextView) findViewById(R.id.dsCabeceraTiempo);
		ImageView imagenActual = (ImageView) findViewById(R.id.imagen_actual);
		TextView texto_previsiones = (TextView) findViewById(R.id.texto_previsiones);
		
		Typeface font = Typeface.createFromAsset(getAssets(), "VSVBPSB.TTF");
		dsCabeceraTiempo.setTypeface(font);
		texto_previsiones.setTypeface(font);
				
		Typeface font2 = Typeface.createFromAsset(getAssets(), "VSVAB.TTF");
		fecha.setTypeface(font2);
		situacion.setTypeface(font2);
		humedad.setTypeface(font2);
		viento.setTypeface(font2);
		temperatura.setTypeface(font2);
		fecha.setTypeface(font2);
		
		//fecha.setText(reporte.getDate());
		fecha.setText("Ahora mismo");
		situacion.setText(reporte.getActual().getSituacion());
		humedad.setText(reporte.getActual().getHumedad());
		viento.setText(reporte.getActual().getSituacionViento());
		temperatura.setText(reporte.getActual().getTemperaturaCent() + "ºC");
		try{
			
			 URL aURL = new URL(reporte.getActual().getRutaImagen());  
	         URLConnection conn = aURL.openConnection();  
	         conn.connect();  
	         InputStream is = conn.getInputStream();  
	
	         BufferedInputStream bis = new BufferedInputStream(is);  
	
	         Bitmap bm = BitmapFactory.decodeStream(bis);  
	         bis.close();  
	         is.close();  

	        // i.setImageBitmap(bm); 
	         imagenActual.setImageBitmap(bm);
		}
		catch (Exception e) {
			e.printStackTrace();	
		}	 
         
 		setListAdapter(new MeteoAdapter(this, reporte.getDiasSiguientes()));
	}
    private final Handler progressHandler = new Handler() {
		public void handleMessage(Message msg) {
			progressDialog.dismiss();
			rellenaPantalla();
        }
    };
	    
	public class MeteoAdapter extends BaseAdapter
	{
		private Activity activity;
		private List<Prevision> items;
		private  LayoutInflater inflater=null;
		public ImageLoader imageLoader; 

		public MeteoAdapter(Activity a,
				List<Prevision> items) {
			activity = a;
			this.items = items;
			inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
	        imageLoader=new ImageLoader(activity.getApplicationContext());
		}
		public int getCount() {
	        return items.size();
	    }

	    public Object getItem(int position) {
	        return position;
	    }

	    public long getItemId(int position) {
	        return position;
	    }
		public View getView(int position, View convertView, ViewGroup parent) {
			View v = convertView;
			if (v == null) {
				LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
				v = vi.inflate(R.layout.climatologia_row, null);
			}
			final Prevision prevision = items.get(position);

			try{
				TextView fecha = (TextView) v.findViewById(R.id.fecha);
				TextView situacion= (TextView) v.findViewById(R.id.situacion);
				TextView texto_maxima = (TextView) v.findViewById(R.id.texto_maxima);
				ImageView imagenPrevision = (ImageView) v.findViewById(R.id.imagen_prevision);
				
				Typeface font2 = Typeface.createFromAsset(getAssets(), "VSVAB.TTF");
				fecha.setTypeface(font2);
				situacion.setTypeface(font2);
				texto_maxima.setTypeface(font2);
				
				//fecha.setText(prevision.getDiaSemana());
				GregorianCalendar gcFecha = (GregorianCalendar)fechaActual.clone();
				gcFecha.add(GregorianCalendar.DAY_OF_MONTH, position);
				fecha.setText(" "+sdf.format(gcFecha.getTime())+" ");
				situacion.setText(" "+prevision.getSituacion()+" ");
				
				texto_maxima.setText(" Máxima: "+prevision.getMaxima()+"ºC "+"Mínima: "+prevision.getMinima()+"ºC ");
				imageLoader.DisplayImage(prevision.getRutaImagen(), activity, imagenPrevision);
				
				
				/*URL aURL = new URL(prevision.getRutaImagen());  
	            URLConnection conn = aURL.openConnection();  
	            conn.connect();  
	            InputStream is = conn.getInputStream();  
	
	            BufferedInputStream bis = new BufferedInputStream(is);  
	
	            Bitmap bm = BitmapFactory.decodeStream(bis);  
	            bis.close();  
	            is.close();  
	            imagenPrevision.setImageBitmap(bm);*/
	           // i.setImageBitmap(bm); 
			}
			catch (Exception e) {
				e.printStackTrace();	
			}     
			
            
			
			return v;
		}
	}
}
